package com.example.springboot.MyBatis.controller;

import com.example.springboot.MyBatis.Vo.User;
import io.swagger.annotations.*;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;

//@Api：用在请求的类上，表示对类的说明
//tags="说明该类的作用，可以在UI界面上看到的注解"
//value="该参数没什么意义，在UI界面上也看到，所以不需要配置"
@Api(tags="swagger测试2类")
@Component
@RestController
@RequestMapping("/test02")
public class Test02 {

//ApiOperation：用在请求的方法上，说明方法的用途、作用
//value="说明方法的用途、作用"
//notes="方法的备注说明"
    @ApiOperation("swagger测试方法t2")
    @PostMapping
    @ResponseBody
    public String t2(@RequestBody User user){
        System.out.println("this is t2,and "+user.getId()+" and "+user.getName());
        return "this is t2,and "+user.getId()+" and "+user.getName()+"。";
    }

    @ApiOperation("swagger测试方法t3")
    @DeleteMapping(value = "/{id}")
    @ResponseBody
    @ApiImplicitParams({
            @ApiImplicitParam(name="id",value="ID",required = true,paramType ="path",dataType="Integer",defaultValue="222")
    })
//    @ApiResponses：用在请求的方法上，表示一组响应
//    @ApiResponse：用在@ApiResponses中，一般用于表达一个错误的响应信息
//    code：数字，例如400
//    message：信息，例如"请求参数没填好"
//    response：抛出异常的类
    @ApiResponses({
            @ApiResponse(code=408,message="指定业务得报错信息，返回客户端"),
            @ApiResponse(code=400,message="请求参数没填好"),
            @ApiResponse(code=404,message="请求路径没有或页面跳转路径不对")
    })
    public String t3(@PathVariable Integer id){
        System.out.println("this is t3,and "+id);
        return "this is t3 and "+id;
    }

    @ApiOperation("swagger测试方法t4")
    @GetMapping
//@ApiImplicitParams：用在请求的方法上，表示一组参数说明
//  @ApiImplicitParam：用在@ApiImplicitParams注解中，指定一个请求参数的各个方面
//      name：参数名
//      value：参数的汉字说明、解释
//      required：参数是否必须传
//      paramType：参数放在哪个地方
//          header --> 请求参数的获取：@RequestHeader
//          query --> 请求参数的获取：@RequestParam
//          path（用于restful接口）--> 请求参数的获取：@PathVariable
//          div（不常用）
//          form（不常用）
//    dataType：参数类型，默认String，其它值dataType="Integer"
//    defaultValue：参数的默认值
    @ApiImplicitParams({
            @ApiImplicitParam(name="id2",value="ID",required = true,paramType ="query",dataType="Integer")
    })
    @ResponseBody //@RequestParam()中没有值则使用原参数名，有值时则使用value值作为参数名映射
    // @RequestParam(""),@RequestParam(name = ""),@RequestParam(value= "")效果一样
    // required = false是否使用映射
    // defaultValue = "默认/缺省 参数值"
    public String t4(@RequestParam("id2") Integer id){
        System.out.println("this is t3,and "+id);
        return "this is t3 and "+id;
    }
}
